package com.dearbinge.data.api.commodity;

import com.baomidou.mybatisplus.plugins.Page;
import com.dearbinge.data.dto.commodity.CommodityMessageDto;
import com.dearbinge.data.pojo.commodity.vo.CommodityDetailsVO;
import com.dearbinge.data.pojo.commodity.vo.CommodityMessageRequestVO;
import com.dearbinge.data.pojo.orderTable.dto.OrderTotalPriceDTO;
import com.dearbinge.utils.ResultMsg;

/**
 * 商品信息 业务层接口
 *
 * @author wes
 * @date 2019/1/12
 */
public interface CommodityMessageService {




    /**
     * 商品信息增加
     * @param commodityMessage 商品信息
     * @return 结果提示
     */
    Integer insert(CommodityMessageRequestVO commodityMessage);

    /**
     * 商品信息修改
     * @param commodityMessage 商品信息
     * @return 结果提示
     */
    Integer update(CommodityMessageRequestVO commodityMessage);

    /**
     * 商品信息 删除
     * @param id 主键id
     * @return 结果
     */
    Integer deleteCommodityMessage(Integer id);

    /**
     * 根据id查询商品信息
     * @param id id
     * @return 商品信息
     */
    CommodityMessageDto getById(Integer id);


    /**
     * 分页根据商品类目查询商品集
     * @param categoryId 商品id
     * @param lastId 最后一个id
     * @param current 当前页
     * @param size 最大数
     * @return 商品集
     */
    Page listCommodityByCategory(String categoryId,Integer lastId, Integer current, Integer size);

    /**
     * 根据商品id查询商品详情
     * @param userId 当前登录的用户id
     * @param otherId 转发商品的用户id（下家）
     * @param commodityId 商品id
     * @return
     */
    ResultMsg<CommodityDetailsVO> getCommodityMessageById(String userId,String otherId, Integer commodityId);

    /**
     * 校验订单金额
     * @param orderTotalPriceDTO 订单价格dto
     * @return 校验结果
     */
    Boolean getCommodityTotal(OrderTotalPriceDTO orderTotalPriceDTO);

    /**
     * 用户能否发商品
     * @param userId 用户id
     * @return 能否
     */
    ResultMsg<Boolean> checkAddCommodityStatus(String userId);

    /**
     * 查询上下架的商品
     * @param userId 用户id
     * @param commodityStatus 上下架状态
     * @param current 当前页
     * @param size 每页展示条数
     * @return 商品集合
     */
    Page listByCommodityStatus(String userId, Boolean commodityStatus, Integer current, Integer size);

    /**
     * 修改商品上下架
     * @param commodityId 商品id
     * @param commodityStatus 商品状态 （0下架 1上架）
     * @return 影响行数
     */
    Integer updateCommodityStatus(Integer commodityId,Boolean commodityStatus);

    /**
     * 分页查分销商品
     * @param shopId 店铺id
     * @param current 当前页
     * @param size 每页条数
     * @return 商品列表
     */
    Page listForwardCommodity(Integer shopId, Integer current, Integer size);

    /**
     * 数据回响 修改商品
     * @param commodityId 商品id
     * @return 商品对象
     */
    CommodityMessageRequestVO getCommodityResponse(Integer commodityId);
}
